"""
TODO 锁机制

1、概述：锁是计算机协调多个进程或线程并发访问某一资源的机制（避免争抢）
    从对数据操作的粒度分：
        表锁：操作时，锁定整个表（主要用于查询）
        行锁：操作时，锁定当前操作行（用于并发）
    从对数据操作的类型分：
        读锁：共享锁，同一份数据，多个读操作可以同时进行而不会互相影响
        写锁：排他锁，当前操作没有完成之前，会阻断其他写锁和读锁

2、MyISAM引擎 - 仅支持表锁：
        加读锁：lock table student read;
        加写锁：lock table student write;

3、InnoDB引擎 - 支持表锁和行锁：
    ① 加表锁：
        加读锁：lock table student read;
        加写锁：lock table student write;
    ② 加行锁：
        加读锁：select * from student where id = 1 lock in share mode;
        加写锁：select * from student where id = 1 for update;

TODO 日志

1、概述：帮助数据库管理员追踪数据库曾经发生过的各种事件

2、错误日志：记录mysql启动、停止及服务器在运行过程中发生任何严重错误时的相关信息
           当数据库出现任何故障导致无法正常使用时，可以首先查看此日志
           默认开启，存放目录：

3、binlog日志：二进制日志，记录所有的DDL（数据定义语言）和DML（数据操纵语言），不包括数据查询语言
             默认开启，
             mysql日志格式 - windows系统： my.ini
                           linux系统：   my.cnf
             配置开启binlog日志：log_bin = mysqlbin (日志的文件名称，如：mysqlbin.000001)
             配置二进制日志格式： binlog_format = statement
             日志格式：
                statement：记录sql语句
                row：      记录每一行的数据变化
                mixed：    混合上面两种格式

4、查询日志：记录包括增删改查的所有操作语句，二进制日志不包括查询数据的sql语句
           默认未开启

5、慢查询日志：记录所有执行时间超过参数long_query_time设置值，并扫描记录数>= min_examined_row_limit的所有sql语句
             long_query_time 默认为10秒，最小为0，精度可到微秒

6、整体操作：
     查看错误日志：                          show variables like '%log_error%';

     是否开启binlog日志：                    show variables like 'log_bin';
     binlog日志的格式：                      show variables like 'binlog_format';
     所有binlog日志：                       show binlog events;
     binlog的最新日志：                     show master status;
     指定的binlog日志：                     show binlog events in 'binlog.000008'
     从666开始，查看指定的binlog日志，限制2条： show binlog events in 'binlog.000008' from 666 limit 2;
                                         show binlog events in 'binlog.000008' from 666 limit 1,2;
     清空日志：                            reset master;

     是否开启查询日志：                      show variables like '%general_log%';
     开启查询日志：                         set global general_log = 1 (0-关闭)
     指定查询日志的文件名：                   general_log_file = file_name (默认为 host_name.log)

     是否开启慢查询日志：                    show variables like '%slow_query_log%';
     开启慢查询日志：                       set global slow_query_log = 1;
     设置查询的时间限制：                    set long_query_time = 10; (超过这个时间认为是慢查询)
     指定慢查询日志的文件名：                 slow_query_log_file = slow_query.log

"""